Message-oriented middleware is infrastructure that increases the interoperability, portability, and flexibility of software applications by allowing the software applications to communicate one with another by transmitting messages therebetween. Message-oriented middleware reduces the complexity of developing software applications that span multiple operating systems and network protocols by insulating application developers from the details of the various operating system and network interfaces. Accordingly, software developers can more easily integrate new software applications with existing software applications.
In typical message-oriented middleware configurations, messages are transmitted from one software application to another by way of a message broker. However, in some instances, a particular software application may be overwhelmed by the number of messages that it receives and enter into a fault state in which it may not be able receive messages and/or process them in a timely manner. The fault state may be caused by the sheer volume of messages that the software application receives, inherent resource limitations of the application platform within which the software application resides, and/or for any other reason.
A typical message broker that receives a message intended for a software application that is in a fault state will repeatedly attempt to deliver the message to the software application for a predetermined time interval before determining that the message is undeliverable and returning it to an originating software application, even if the message broker has already failed to deliver other messages to the software application. Such repeated attempts to deliver each message intended for a software application in a fault state can cause undesirable delays, consume valuable network resources, and result in frustrating experiences for end users.